
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using AEL.ACT;
using AEL.COM;
using BEL;
    
    namespace DEL.ACT
    {
    /// <summary>
    /// Acceso a la base de datos
    /// Modulo:Activos ta
    /// Tabla:Act_Activo_Atributo
    /// </summary>
    public class DO_Act_Activo_Atributo
    {
        #region Adapter
        private static CEL.ACT.DO_Act_Activo_Atributo _adpAct_Activo_Atributo;
        private static CEL.ACT.DO_Act_Activo_Atributo adpAct_Activo_Atributo
        {
            get
            {
                if (_adpAct_Activo_Atributo == null)
                    _adpAct_Activo_Atributo = new CEL.ACT.DO_Act_Activo_Atributo();
                return _adpAct_Activo_Atributo;
            }
        }

        private static CEL.ACT.DO_Act_Activo _adpAct_Activo;
        private static CEL.ACT.DO_Act_Activo adpAct_Activo
        {
            get
            {
                if (_adpAct_Activo == null)
                    _adpAct_Activo = new CEL.ACT.DO_Act_Activo();
                return _adpAct_Activo;
            }
        }

        private static CEL.ACT.DO_Act_Clase_Atributo _adpAct_Clase_Atributo;
        private static CEL.ACT.DO_Act_Clase_Atributo adpAct_Clase_Atributo
        {
            get
            {
                if (_adpAct_Clase_Atributo == null)
                    _adpAct_Clase_Atributo = new CEL.ACT.DO_Act_Clase_Atributo();
                return _adpAct_Clase_Atributo;
            }
        }
        #endregion

        #region Operaciones


        public static int Delete(Scope s, Act_Activo_Atributo oAct_Activo_Atributo)
        {
            int resultado = 0;
            int aux = 0;
            System.Exception eCaso;
            System.Exception otroEX;
            try
            {
                adpAct_Activo.Adapter.BeginTransaction();
                adpAct_Activo_Atributo.Adapter.Transaction = adpAct_Activo.Adapter.Transaction;

                //obtengo la clase que tiene ese activo
                List<Act_Activo> activo = adpAct_Activo.GetById(s, oAct_Activo_Atributo.Act_Activo_Id);

                //obtengo los atributos que tiene la clase
                List<Act_Clase_Atributo> clase_atributo = adpAct_Clase_Atributo.GetByClase(s, oAct_Activo_Atributo.Act_Clase_Id);

                foreach (Act_Clase_Atributo v_clase_atributo in clase_atributo)
                {
                    if(oAct_Activo_Atributo.Act_Atributo_Id== v_clase_atributo.Act_Atributo_Id)
                    {
                        aux = 1;
                    }
                }
                
                if(aux==0)
                {
                    resultado = adpAct_Activo_Atributo.Delete(s, oAct_Activo_Atributo);
                    
                }
                else
                {
                    eCaso = new System.Exception("");
                    otroEX = new System.Exception(TXT_Mensajes._MSJ48, eCaso);
                    throw (otroEX);
                }
                
                adpAct_Activo.Adapter.CommitTransaction();
            }
            catch (Exception e)
            {
                adpAct_Activo.Adapter.RollbackTransaction();
                throw (e);
            }
            return resultado;
        }
        #endregion
    }
    }
